package com.bw.sort;

import org.junit.Test;

public class Bubbling_Choose_Insert {
    private Integer arr[]={1,6,25,7,8,9,3,4,15,16};

    /**
     * 选择排序
     * 主要是：第一个数与其它所有的数进行比较。
     * 开发效率快   执行效率慢
     */
    @Test
    public void getBubbing(){
        int temp;
        for (int i=1;i<arr.length;i++) {
            for (int j=0;j<arr.length-i;j++){
                if(arr[j]>arr[j+1]){
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }

    /**
     * 选择排序
     * 主要是：每一轮比较  选出最小的值 交换
     */
    @Test
    public void getChoose(){
        int temp;
        for(int i=0;i<arr.length-1;i++){
            int min = i;
            for (int j=i+1;j<arr.length;j++){
                if(arr[min] > arr[j]){
                    min = j;
                }
            }
            if(min != i){
                temp = arr[i];
                arr[i] = arr[min];
                arr[min] = temp;
            }
        }
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }

    /**
     * 插入排序
     * 主要是： 假设前面已经排好序  后面来的数与最后一个比较 如果小往前继续比较 如果大就不比较
     */
    @Test
    public void getInsert(){
        for(int i=1;i<arr.length;i++){
            for(int j=i;j>0;j--){
                if(arr[j]<arr[j-1]){
                    int temp=arr[j];
                    arr[j]=arr[j-1];
                    arr[j-1]=temp;
                }else{
                    break;
                }
            }
        }

        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }
}
